package com.project.mapper;

import com.project.bean.ShopCarBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author lyl
 * description:购物车mapper接口
 */
public interface IShopCarMapper {

    /**
     * 根据用户id查询购物车集合
     * 同时需要连表查询查询出购物车商品
     *
     * @param userId 用户id
     * @return 购物车集合
     */
    List<ShopCarBean> findAllByUserId(@Param("userId") int userId);

    /**
     * 根据传入商品与用户id查找购物车对象
     *
     * @param productId
     * @param userId
     * @return
     */
    ShopCarBean findShopCarById(@Param("productId") int productId, @Param("userId") int userId);

    /**
     * 将商品添加到购物车
     * 首先判断该购物车对象是否存在于数据库
     * 如果有则直接在购物车对象钟的数量+1（修改操作
     *
     * @param productId 商品id
     * @param userId    用户id
     */
    void updateProductToShopCar(@Param("productId") int productId, @Param("userId") int userId);

    /**
     * 将商品添加到购物车
     * 首先判断该购物车对象是否存在于数据库
     * 如果没有，则添加购物车对象，商品数量则默认为1（添加操作
     *
     * @param productId
     * @param userId
     */
    void addNewProductToShopCar(@Param("productId") int productId, @Param("userId") int userId);


    /**
     * 根据商品id从购物车移除
     *
     * @param userId    用户id
     * @param productId 商品id
     */
    void delProductFromShopCar(@Param("productId") int productId, @Param("userId") int userId);

    /**
     * 前端做onblur失去焦点事件进行触发
     * 按购物车id修改商品数量
     *
     * @param shopCarId 购物车id
     * @param num       该商品新的数量
     */
    void updateProductNum(@Param("shopCarId") int shopCarId, @Param("num") int num);

    /**
     * 根据用户id清空该用户下的购物车数据
     *
     * @param userId 用户id
     */
    void cleanShopCar(@Param("userId") int userId);
}
